/**
 * 聊天同步测试脚本
 * 用于测试聊天消息同步功能的修复效果
 */

const testChatSync = async () => {
  console.log('🧪 开始测试聊天同步功能...')
  
  try {
    // 测试Socket连接
    console.log('1. 测试Socket连接...')
    const socket = require('socket.io-client')
    const client = socket('http://localhost:3000', {
      transports: ['websocket'],
      query: { userId: 'test_user_123' }
    })
    
    client.on('connect', () => {
      console.log('✅ Socket连接成功')
      
      // 测试加入聊天房间
      console.log('2. 测试加入聊天房间...')
      client.emit('chat:join', 'test_chat_123')
      
      // 测试发送消息
      console.log('3. 测试发送消息...')
      setTimeout(() => {
        client.emit('chat:typing', { chatId: 'test_chat_123' })
        console.log('✅ 发送输入状态成功')
      }, 1000)
      
      // 测试接收消息
      console.log('4. 测试接收消息...')
      client.on('chat:newMessage', (payload) => {
        console.log('✅ 收到新消息:', payload)
      })
      
      client.on('chat:typing', (payload) => {
        console.log('✅ 收到输入状态:', payload)
      })
      
      // 模拟消息推送
      setTimeout(() => {
        console.log('5. 模拟消息推送...')
        client.emit('chat:newMessage', {
          chatId: 'test_chat_123',
          message: {
            _id: 'test_msg_' + Date.now(),
            senderId: 'test_user_456',
            content: '这是一条测试消息',
            type: 'text',
            createdAt: new Date()
          }
        })
      }, 2000)
      
      // 测试断线重连
      setTimeout(() => {
        console.log('6. 测试断线重连...')
        client.disconnect()
        setTimeout(() => {
          client.connect()
        }, 1000)
      }, 3000)
      
      // 清理
      setTimeout(() => {
        console.log('7. 清理测试...')
        client.disconnect()
        console.log('✅ 聊天同步测试完成')
      }, 5000)
    })
    
    client.on('connect_error', (error) => {
      console.error('❌ Socket连接失败:', error)
    })
    
    client.on('disconnect', () => {
      console.log('🔌 Socket断开连接')
    })
    
  } catch (error) {
    console.error('❌ 测试失败:', error)
  }
}

// 运行测试
if (require.main === module) {
  testChatSync()
}

module.exports = { testChatSync }
